home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2005 October
/
PCWOCT05.iso
/
Software
/
FromTheMag
/
Ant Movie Catalog 3.5.0.2
/
amc_install.exe
/
{app}
/
Scripts
/
alldvd.ru.ifs
< prev
next >
Wrap
Text File
|
2005-03-13
|
11KB
|
411 lines
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Yuri Vlasov (<link>wildfish@mail.ru</link>)
Title=alldvd.ru
Description=Import data & picture from ALLDVD.RU
Site=alldvd.ru
Language=RU
Version=1.0 (08.02.2005)
Requires=3.5.0
Comments=
License=
GetInfo=1
[Options]
***************************************************)
program alldvd_ru;
const
BaseAddress = 'http://alldvd.ru/php/';
var
MovieName: string;
//==============================================================================
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: Integer;
Line: string;
TextBlock: string;
BeginPos, EndPos: Integer;
s: string;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
if pos('<strong>╨┼╟╙╦▄╥└╥ ╧╬╚╤╩└</strong>', Page.Text) = 0 then
begin
//URL
if CanSetField(fieldURL) then
SetField(fieldURL, Address);
AnalyzeVideoPage(Page);
end
else
begin
PickTreeClear;
LineNr := FindLine('<img src=../images/trans.gif width=300 height=1 border=0><br><strong>', Page, 0);
if LineNr > -1 then
begin
PickTreeAdd('╨στ≤δⁿ≥α≥√ ∩εΦ±Ωα "'+MovieName+'"', '');
AddMoviesTitles(Page, LineNr);
end;
LineNr := FindLine('[1-10]</span> <a href=', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
s := '[1-10]</span> <a href=';
BeginPos := Pos(s, Line) + Length(s);
EndPos := Pos('>[11-20]</a>', Line);
s := Copy(Line, BeginPos, EndPos - BeginPos);
// PickTreeMoreLink(BaseAddress + s);
PickTreeMoreLink('http://alldvd.ru/php/content.php?group=namedvd&slovo=' + UrlEncode(MovieName) + '&code1=0&page=1');
end;
if PickTreeExec(Address) then
AnalyzePage(Address);
end;
Page.Free;
end;
//==============================================================================
function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
i: Integer;
begin
Result := -1;
if StartAt < 0 then
StartAt := 0;
for i := StartAt to List.Count-1 do
if Pos(AnsiUpperCase(Pattern), AnsiUpperCase(List.GetString(i))) <> 0 then
begin
result := i;
Break;
end;
end;
//==============================================================================
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress, s: string;
StartPos, EndPos: Integer;
begin
repeat
Line := Page.GetString(LineNr);
s := '<img src=../images/trans.gif width=300 height=1 border=0><br><strong>';
StartPos := Pos(s, Line);
if StartPos > 0 then
begin
Delete (Line, 1, StartPos + Length(s) - 1);
MovieTitle := Copy(Line, 1, Pos('</strong>', Line));
s := '<A href=';
StartPos := Pos(s, Line);
if StartPos > 0 then
begin
Delete (Line, 1, StartPos + Length(s) - 1);
MovieAddress := Copy(Line, 1, Pos('><', Line)-1);
HTMLDecode(MovieTitle);
HTMLRemoveTags(MovieTitle);
PickTreeAdd(MovieTitle, BaseAddress + MovieAddress);
end;
end;
LineNr := LineNr + 1;
until LineNr > Page.Count;
end;
//==============================================================================
function GetText (Line: string; sBegin, sEnd: string): string;
var
BeginPos, EndPos: Integer;
s: string;
begin
Result := '';
BeginPos := Pos(sBegin, Line) + Length(sBegin);
EndPos := Pos(sEnd, Line);
if (BeginPos = 0) then BeginPos := 1;
if (EndPos = 0) then EndPos := Length(Line);
s := Copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(s);
HTMLRemoveTags(s);
Result := Trim(s);
end;
//==============================================================================
procedure AnalyzeVideoPage(Page: TStringList);
var
Line, Value, Value2, FullValue: string;
LineNr, MovieLength: Integer;
BeginPos, EndPos: Integer;
MovieName, s, sResult: string;
begin
s := '<TITLE>DVD Φφ≥σ≡φσ≥-∞απατΦφ - DVD-ΣΦ±Ω: ';
LineNr := FindLine(s, Page, 0);
if LineNr = -1 then exit;
// Title
Line := Page.GetString(LineNr);
Delete(Line, 1, Pos(s, Line) + Length(s) - 1);
EndPos := Pos('rus', Line);
if EndPos = 0 then
EndPos := Pos(' / ', Line);
if EndPos = 0 then
EndPos := Length(Line);;
s := Copy(Line, BeginPos, EndPos - BeginPos - 1);
HTMLDecode(s);
HTMLRemoveTags(s);
s := Trim(s);
MovieName := s;
if CanSetField(fieldTranslatedTitle) then
SetField(fieldTranslatedTitle, MovieName);
//Original Title
if CanSetField(fieldOriginalTitle) then
begin
Delete(Line, 1, Length(MovieName) - 1);
BeginPos := Pos('rus', Line) + 3;
EndPos := Pos(' / ', Line) + 3;
if BeginPos < EndPos then
BeginPos := EndPos;
s := Copy(Line, BeginPos, Pos('</TITLE>', Line));
HTMLDecode(s);
HTMLRemoveTags(s);
s := Trim(s);
SetField(fieldOriginalTitle, s);
end;
//Actors
if CanSetField(fieldActors) then
begin
s := '┬ ≡εδ ⌡:';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos(s, Line) + Length(s) - 1;
Delete(Line, 1, BeginPos);
EndPos := Pos('╨σµΦ±±σ≡√:', Line)-1;
if EndPos = 0 then EndPos := Length(Line);
s := Copy(Line, 1, EndPos);
s := StringReplace(s, '</a>', ',</a>');
HTMLDecode(s);
HTMLRemoveTags(s);
s := Trim(s);
Delete(s, Length(s), Length(s));
SetField(fieldActors, s);
end;
end;
//Director
if CanSetField(fieldDirector) then
begin
s := '╨σµΦ±±σ≡√:';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos(s, Line) + Length(s) - 1;
Delete(Line, 1, BeginPos);
EndPos := Pos('╞αφ≡:', Line)-1;
if EndPos = 0 then EndPos := Length(Line);
s := Copy(Line, 1, EndPos);
s := StringReplace(s, '</a>', ',</a>');
HTMLDecode(s);
HTMLRemoveTags(s);
s := Trim(s);
if Pos(',', s) = Length(s) then
Delete(s, Length(s), Length(s));
SetField(fieldDirector, s);
end;
end;
//Category
if CanSetField(fieldCategory) then
begin
s := '╞αφ≡:';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos(s, Line) + Length(s) - 1;
Delete(Line, 1, BeginPos);
s := Copy(Line, 1, Length(Line));
sResult := s;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
while (Pos('<br>', Line) = 0) do
begin
sResult := sResult + ',' + Line;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
HTMLDecode(sResult);
HTMLRemoveTags(sResult);
sResult := Trim(sResult);
SetField(fieldCategory, sResult);
end;
end;
//fieldLanguages
if CanSetField(fieldLanguages) then
begin
s := '▀τ√Ω Φ ±≥αφΣα≡≥ τΓ≤Ωα:';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
sResult := '';
while (Pos('╥Φ∩ ΣΦ±Ωα:', Line)=0) do
begin
EndPos := Pos(' - ', Line)-1;
s := Copy(Line, 1, EndPos);
if sResult = '' then
sResult := sResult + s
else
sResult := sResult + ', ' + s;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
HTMLDecode(sResult);
HTMLRemoveTags(sResult);
sResult := Trim(sResult);
SetField(fieldLanguages, sResult);
end;
end;
//fieldSubtitles
if CanSetField(fieldSubtitles) then
begin
s := '▀τ√Ω ±≤ß≥Φ≥≡εΓ:';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos(s, Line) + Length(s) - 1;
Delete(Line, 1, BeginPos);
s := Copy(Line, 1, Length(Line));
sResult := s;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
while (Pos('<br>', Line) = 0) do
begin
sResult := sResult + ', ' + s;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
HTMLDecode(sResult);
HTMLRemoveTags(sResult);
sResult := Trim(sResult);
SetField(fieldSubtitles, sResult);
end;
end;
//fieldLength
if CanSetField(fieldLength) then
begin
s := '─δΦ≥σδⁿφε±≥ⁿ ΣΦ±Ωα:';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos(s, Line) + Length(s) - 1;
Delete(Line, 1, BeginPos);
EndPos := Pos('∞Φφ.', Line)-1;
if EndPos = 0 then EndPos := Length(Line);
s := Copy(Line, 1, EndPos);
HTMLDecode(s);
HTMLRemoveTags(s);
s := Trim(s);
SetField(fieldLength, s);
end;
end;
//fieldDescription
if CanSetField(fieldDescription) then
begin
s := '<strong>╩ε≡ε≥Ωε ε ⌠Φδⁿ∞σ</strong>';
LineNr := FindLine(s, Page, 0);
if LineNr <> -1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
sResult := '';
while (Pos('</td>', Line)=0) do
begin
sResult := sResult + Line;
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
end;
sResult := StringReplace(sResult, '<br>',#13#10);
sResult := StringReplace(sResult, '<BR>',#13#10);
HTMLDecode(sResult);
HTMLRemoveTags(sResult);
SetField(fieldDescription, sResult);
end;
end;
//Picture
if CanSetPicture then
begin
LineNr := FindLine('<FORM action=../php/zakaz.php method=post target=bin>', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr+1);
s := '<IMG src="';
Delete (Line, 1, Pos(s, Line) + Length(s)-1);
BeginPos := 1;
EndPos := Pos('JPG', AnsiUpperCase(Line)) + 3;
if (BeginPos <> 0) and (EndPos <> 0) then
begin
s := Copy(Line, BeginPos, EndPos - BeginPos);
s := Trim(s);
GetPicture(BaseAddress + s);
end;
end;
end;
end;
//==============================================================================
//==============================================================================
//==============================================================================
begin
if CheckVersion(3,5,0) then
begin
MovieName := GetField(fieldTranslatedTitle);
if MovieName = '' then
MovieName := GetField(fieldOriginalTitle);
if Input('Import from alldvd.ru', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://alldvd.ru/php/content.php?group=namedvd&slovo=' + UrlEncode(MovieName) + '&code1=0&page=0');
end;
end
else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.